Concurrent use licenses are routinely used in the software industry as a convenient and often cost-effective manner of providing computer software to customers. Unlike other types of licenses that typically limit the number of copies of a computer program that can be installed on a customer's computers, a concurrent use license typically limits how many users can access or use a computer program at one time. While other applications of concurrent use licenses exist, one particularly beneficial application is in networked computer systems where multiple copies of a computer program are executed on a server or other multi-user computer accessible by multiple users. In such a system, a customer can often license a computer program for a fee that is based upon the number of users that the customer expects will need access to the computer program at one time, which is often significantly lower than the total number of users having access to the system.
Software-based license managers are conventionally used on multi-user computers and the like to restrict the use of computer programs based upon the terms of concurrent use licenses associated with those computer programs. With a software-based license manager, uses of a computer program are tracked for a given computer, and requests to use the computer program are automatically granted or denied based upon the number of other uses being tracked by the license manager.
A number of conventional license managers rely on the use of software “keys” to handle requests to use computer programs. Specifically, when a customer licenses a computer program, the customer is provided with a software code that includes a product identifier (which identifies the licensed computer program), a machine identifier (which identifies the particular computer upon which the computer program will execute), and a license identifier (which identifies the license terms, e.g., the allowed maximum number of concurrent users for the computer program). The key is also typically encrypted so that the information contained therein cannot be modified by the customer or others to defeat the license restrictions.
When the computer program is installed on the customer's computer, the software key is provided to the license manager on the computer, and the license manager verifies that the product is indeed licensed for the computer by comparing the machine identifier in the key with that maintained in the computer. Subsequent requests by users to use the computer program are then handled by the license manager to limit the number of concurrent uses to that specified in the key.
With many licence management schemes, the machine identifier is tied to a unique and non-modifiable identifier associated with the underlying computer hardware (e.g., the computer's serial number) to prevent an unauthorized party from changing the machine identifier for a computer to match that of an authorized computer and illegally installing a computer program, originally licensed for the authorized computer, on the unauthorized computer. However, tying the machine identifier to a serial number or other unique identifier for the underlying computer hardware can introduce a significant management problem when the computer utilizes logical partitioning.
Specifically, with logical partitioning, a single physical computer is permitted to operate essentially like multiple and independent “virtual” computers (referred to as logical partitions), with the various resources in the physical computer (e.g., processors, memory, input/output devices, etc.) allocated among the various logical partitions by a shared partition manager, often also referred to as a “hypervisor”. Each logical partition executes a separate operating system, and from the perspective of users and of the software executing on the logical partition, operates as a fully independent computer.
Given the independence of logical partitions, conventional approaches to license management utilize a separate license manager in each logical partition to handle the license management operations for the applications residing within the logical partition. Despite the logical independence of the logical partitions, however, the logical partitions still share the same machine identifier given that they reside on the same underlying computer hardware.
As a result, with conventional approaches a customer may be able to use the same software key to install a licensed computer program on multiple logical partitions on the same physical computer. Furthermore, such license managers, which are typically the same programs used on non-partitioned computers, have no capability to determine whether a particular program is currently in use in other partitions. Consequently, while the license manager in each logical partition may limit the number of concurrent uses within that logical partition to match the license restrictions set forth in the software key, the aggregate number of concurrent uses across all of the logical partitions may exceed the license restrictions. In essence, the license restrictions are defeated simply by installing a program on multiple logical partitions.
Therefore, a significant need exists for an improved manner of managing concurrent use licenses in a logically partitioned computer, and specifically to manage the number of concurrent uses of a computer program across multiple logical partitions.